package main

import (
	"fmt"
)

var Name = "tome"

func defertest(n1, n2 int) int {

	//当执行到defer时，暂时不执行，会将defer后面的语句压入独立的栈中（defer栈）
	//注意：defer入栈的时，会将相应的值就行拷贝
	//但函数执行完毕后，再从defer栈以先入后出的方式出栈，执行
	defer fmt.Println("n1==", n1) //3、第三步
	defer fmt.Println("n2==", n2) //2、第二步

	n1++
	n2++
	res := n1 + n2
	fmt.Println("defertest res", res) //1、第一步
	return res
}

func main() {
	res := defertest(2, 3)
	fmt.Println("main res", res) //4、第四步
}
